<?php
/**
 * Flea Site
 *
 * @copyright  Copyright (c) 2008 Movoin Studio (http://movoin.com)
 * @license    Apache License 2.0
 * @version    $Id: Contents.php 138 2009-05-25 06:42:38Z movoin $
 */

// {{{ include
FLEA::loadClass( 'FLEA_Db_TableDataGateway' );
// }}}

/**
 * Table_Contents 表数据接口类，提供对mo_contents表数据的CRUD操作
 */
class Table_Contents extends FLEA_Db_TableDataGateway
{
    /*
     * 表名
     */
    var $tableName = 'contents';
    /*
     * 主键
     */
    var $primaryKey = 'id';

    /**
     * 设置一对多关系
     * 一篇内容含有多篇评论及多个附件
     *
     * @var array
     */
    var $hasMany = array(
        array(
            'tableClass'    => 'Table_Comments',
            'foreignKey'    => 'content_id',
            'mappingName'   => 'comments',
            'fields'        => array('comment_id', 'content', 'options', 'created'),
            'enabled'       => false
        ),
        array(
            'tableClass'    => 'Table_Attachments',
            'foreignKey'    => 'content_id',
            'mappingName'   => 'attachments',
            'fields'        => array('attach_id', 'type', 'name', 'filename', 'filepath'),
            'enabled'       => false
        )
    );

    /**
     * 设置从属关系
     * 一篇内容属于一个分类
     *
     * @var array
     */
    var $belongsTo = array(
        array(
            'tableClass'    => 'Table_Categories',
            'foreignKey'    => 'cate_id',
            'mappingName'   => 'category',
            'fields'        => array('name'),
            'enabled'        => false
        )
    );

    /**
     * 创建记录前进行的处理
     *
     * @param array $row
     * @return array
     */
    function _beforeCreate(& $row)
    {
        return $this->_serializeValues($row);
    }

    /**
     * 更新记录前进行的处理
     *
     * @param array $row
     * @return array
     */
    function _beforeUpdate(& $row)
    {
        return $this->_serializeValues($row);
    }

    /**
     * 将提交的Options字段进行serialize操作
     *
     * @param array $row
     * @return array
     */
    function _serializeValues(& $row)
    {
        $row = $row;
        return $row;
    }
}
